package com.ymatou.iapi.optrade.parameter.req;

import java.math.BigDecimal;
import java.util.List;

import com.ymatou.iapi.optrade.parameter.enums.TerminalSourceEnum;

@SuppressWarnings("serial")
public class PayReq extends BaseRequest {

	private long tradingId;

	private List<Long> orderIds;

	/**
	 * 用户Id
	 */
	private long userId;

	/**
	 * 用户登录Id
	 */
	private String userLoginId;

	/**
	 *
	 */
	private String bankId;

	/**
	 * 回调Url
	 */
	private String callbackUrl;

	/**
	 * 第三方回调CallBackUrl时候，会带上Memo
	 */
	private String memo;

	/**
	 * json格式 如:{"paymethod":A, "showmode":B}
	 * paymethod：具体支付方式，A取值范围1-3  1：贷记卡 2：泛指银行卡  3：余额
	 * showmode：指二维码呈现模式和大小 B取值范围0-3
	 */
	private String paramExt;

	/**
	 * 10：普通html收银台 11：支付宝wap收银台 12：支付宝国际收银台 13：支付宝app 14：微信jsapi 15：微信app
	 */
	private String payType;

	/**
	 * 定义为transient，使得日志输出时不输出
	 */
	private String tradingPwd;

	/**
	 * 使用码头账户余额支付金额
	 */
	private BigDecimal useAccountAmount;

	/**
	 * 来源Ip
	 */
	private String userIp;

	/**
	 * 可选支付方式(70:宝付)
	 */
	private List<Integer> optionalPayTypes;

	/**
	 * 终端来源(如：IOS、Android)
	 */
	private TerminalSourceEnum terminalSource;

	/**
	 * 设备ID
	 */
	private String deviceId;

	/**
	 * 分期付款的期数
	 */
	private Integer installmentNum;

	/**
	 * 微信WAP支付
	 */
	private String openId;
	
	 /**
     * 是否可享受支付立减
     */
    private boolean canPayDeduct;
    
    /**
     * 支付类型(1:支付全款   2：支付定金)
     * 
     */
    private Integer tradeType = 1;
    
    /**
     * 神器小程序id
     * 
     */
    private String shenqiMpId;
    
    /**
     * 支付网关实际支付的payAmount
     * 
     */
    private BigDecimal payAmount;
    
    /**
     * 支付后，支付回调前使用折扣
     * 
     */
    private boolean discountAfterPay;

	public List<Long> getOrderIds() {
		return orderIds;
	}

	public void setOrderIds(List<Long> orderIds) {
		this.orderIds = orderIds;
	}

	public String getUserLoginId() {
		return userLoginId;
	}

	public void setUserLoginId(String userLoginId) {
		this.userLoginId = userLoginId;
	}

	public long getUserId() {
		return userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	public String getBankId() {
		return bankId;
	}

	public void setBankId(String bankId) {
		this.bankId = bankId;
	}

	public String getCallbackUrl() {
		return callbackUrl;
	}

	public void setCallbackUrl(String callbackUrl) {
		this.callbackUrl = callbackUrl;
	}

	public String getMemo() {
		return memo;
	}

	public void setMemo(String memo) {
		this.memo = memo;
	}

	public String getParamExt() {
		return paramExt;
	}

	public void setParamExt(String paramExt) {
		this.paramExt = paramExt;
	}

	public String getPayType() {
		return payType;
	}

	public void setPayType(String payType) {
		this.payType = payType;
	}

	public String getTradingPwd() {
		return tradingPwd;
	}

	public void setTradingPwd(String tradingPwd) {
		this.tradingPwd = tradingPwd;
	}

	public BigDecimal getUseAccountAmount() {
		return useAccountAmount;
	}

	public void setUseAccountAmount(BigDecimal useAccountAmount) {
		this.useAccountAmount = useAccountAmount;
	}

	public String getUserIp() {
		return userIp;
	}

	public void setUserIp(String userIp) {
		this.userIp = userIp;
	}

	public List<Integer> getOptionalPayTypes() {
		return optionalPayTypes;
	}

	public void setOptionalPayTypes(List<Integer> optionalPayTypes) {
		this.optionalPayTypes = optionalPayTypes;
	}

	public String getDeviceId() {
		return deviceId;
	}

	public void setDeviceId(String deviceId) {
		this.deviceId = deviceId;
	}

	public Integer getInstallmentNum() {
		return installmentNum;
	}

	public void setInstallmentNum(Integer installmentNum) {
		this.installmentNum = installmentNum;
	}

	public String getOpenId() {
		return openId;
	}

	public void setOpenId(String openId) {
		this.openId = openId;
	}

	public TerminalSourceEnum getTerminalSource() {
		return terminalSource;
	}

	public void setTerminalSource(TerminalSourceEnum terminalSource) {
		this.terminalSource = terminalSource;
	}

	public long getTradingId() {
		return tradingId;
	}

	public void setTradingId(long tradingId) {
		this.tradingId = tradingId;
	}

	public boolean isCanPayDeduct() {
		return canPayDeduct;
	}

	public void setCanPayDeduct(boolean canPayDeduct) {
		this.canPayDeduct = canPayDeduct;
	}

	public Integer getTradeType() {
		return tradeType;
	}

	public void setTradeType(Integer tradeType) {
		this.tradeType = tradeType;
	}

	public String getShenqiMpId() {
		return shenqiMpId;
	}

	public void setShenqiMpId(String shenqiMpId) {
		this.shenqiMpId = shenqiMpId;
	}

	public BigDecimal getPayAmount() {
		return payAmount;
	}

	public void setPayAmount(BigDecimal payAmount) {
		this.payAmount = payAmount;
	}

	public boolean getDiscountAfterPay() {
		return discountAfterPay;
	}

	public void setDiscountAfterPay(boolean discountAfterPay) {
		this.discountAfterPay = discountAfterPay;
	}
}
